<?php
class RelatoriasController extends AppController {

	var $name = 'Relatorias';
	var $uses = array('Relatoria','Municipio', 'MunicipiosUser', 'EntidadesMunicipio', 'Entidade', 'Asistencia');
	var $helpers=array('Access', 'Relatoria');
	
	function index() {		
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		$municipios=$this->MunicipiosUser->find('all',array('fields',array('MunicipiosUser.id',),'conditions'=>array('MunicipiosUser.user_id'=>$this->Access->getMy('id'))));	
		foreach ($municipios as &$municipio){
			$nombre_municipio=$this->Municipio->find('first',array('fields'=>array('Municipio.id','Municipio.nombre'),
																	'conditions'=>array('Municipio.id'=>$municipio['MunicipiosUser']['municipio_id'])));
			$municipio['MunicipiosUser']['nombre']=$nombre_municipio['Municipio']['nombre'];
			$municipio['MunicipiosUser']['id']=$nombre_municipio['Municipio']['id'];
		}
		$this->set(compact('municipios'));
		
	}
	
	function view($id = null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		$usuario_activo=$this->Access->getMy('username');
		if (!$id) {
			$this->Session->setFlash(__('Relatoria Invalida', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('relatoria', $this->Relatoria->read(null, $id));
	}
	
	function add($municipio_id = null, $momento=null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!empty($this->data)) {
			$form = $this->data;
			
			//Primero creo las asistencias
			
			foreach ($form['Relatoria']['Entidad'] as $entidad) {		
					$registro['Asistencia'] = array('momento_id'=>$form['Relatoria']['momento_id'],'municipio_id'=>$form['Relatoria']['municipio_id'],
													'entidade_id'=>$entidad['entidad_id'],'asistentes'=>$entidad['entidad']);
					$this->Asistencia->create();
					$this->Asistencia->save($registro);
			}
			
			//Segundo creo las descripciones por producto			
			foreach ($form['Relatoria']['Producto'] as $producto) {
					$registro['Relatoria'] = array('momento_id'=>$form['Relatoria']['momento_id'],'municipio_id'=>$form['Relatoria']['municipio_id'],
													'producto_id'=>$producto['producto_id'],'descripcion_actividades'=>$producto['producto']);
					$this->Relatoria->create();
					$this->Relatoria->save($registro);
			}
					
			$this->Session->setFlash(__('Relatoria Guardada', true));
			$this->redirect(array('action' => 'index'));			
		}
		
		$productos = $this->Relatoria->Producto->find('all',array('conditions'=>array('Producto.momento_id'=>$momento)));
		$municipio = $this->Relatoria->Municipio->find('first', array('fields'=>array('Municipio.id','Municipio.nombre'), 
														'conditions'=>array('Municipio.id'=>$municipio_id)));
		$entidades_municipio = $this->EntidadesMunicipio->find('all',array('conditions'=>array('EntidadesMunicipio.municipio_id'=>$municipio_id)));
		
		$entidades = array();
		
		foreach ($entidades_municipio as $entidad):
			$aux = $this->Entidade->find('first',array('conditions'=>array('Entidade.id'=>$entidad['EntidadesMunicipio']['entidade_id'])));
			$entidades[]= $aux['Entidade'];			
		endforeach;
		
		$this->set(compact('productos', 'municipio', 'entidades', 'momento'));
	}

	function edit($municipio_id = null, $momento=null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$municipio_id && !$momento && empty($this->data)) {
			$this->Session->setFlash(__('Relatoria Invalida', true));
			$this->redirect(array('action' => 'index'));
		}
		
		if (!empty($this->data)) {
			$form = $this->data;
			
			//Primero Actualizo las asistencias
			
			foreach ($form['Relatoria']['Entidad'] as $entidad) {
					$asistencia_id = $this->Asistencia->find('first',array('conditions'=>array('Asistencia.municipio_id'=>$form['Relatoria']['municipio_id'], 
																			'Asistencia.momento_id'=>$form['Relatoria']['momento_id'], 
																			'AND'=>array('Asistencia.entidade_id'=>$entidad['entidad_id']))));

					
					
					$registro['Asistencia'] = array('momento_id'=>$form['Relatoria']['momento_id'],'municipio_id'=>$form['Relatoria']['municipio_id'],
													'entidade_id'=>$entidad['entidad_id'],'asistentes'=>$entidad['entidad']);
					
					$this->Asistencia->create();
					$this->Asistencia->id = $asistencia_id['Asistencia']['id']; 
					$this->Asistencia->save($registro);
			}
			
			//Segundo actualizo las descripciones por producto			
			foreach ($form['Relatoria']['Producto'] as $producto) {
					$relatoria_id = $this->Relatoria->find('first',array('conditions'=>array('Relatoria.municipio_id'=>$form['Relatoria']['municipio_id'],
								 											'Relatoria.momento_id'=>$form['Relatoria']['momento_id'],
																			'AND'=>array('Relatoria.producto_id'=>$producto['producto_id']))));
					
					$registro['Relatoria'] = array('momento_id'=>$form['Relatoria']['momento_id'],'municipio_id'=>$form['Relatoria']['municipio_id'],
													'producto_id'=>$producto['producto_id'],'descripcion_actividades'=>$producto['producto']);
					$this->Relatoria->create();
					$this->Relatoria->id = $relatoria_id['Relatoria']['id'];
					$this->Relatoria->save($registro);
			}
					
			$this->Session->setFlash(__('Relatoria Actualizada', true));
			$this->redirect(array('action' => 'index'));			
		}
		
		//Asistentes
		$asistentes = $this->Asistencia->find('list',array('fields'=>array('Asistencia.entidade_id','Asistencia.asistentes'),
											  //'conditions'=>array('Asistencia.municipio_id'=>$municipio_id, 'AND'=>array('Asistencia.momento_id'=>$momento))));
											  'conditions'=>array('Asistencia.municipio_id'=>$municipio_id, 'Asistencia.momento_id'=>$momento)));
		
		$productos = $this->Relatoria->Producto->find('all',array('conditions'=>array('Producto.momento_id'=>$momento)));
		$municipio = $this->Relatoria->Municipio->find('first', array('fields'=>array('Municipio.id','Municipio.nombre'), 
														'conditions'=>array('Municipio.id'=>$municipio_id)));
		
		//relatorias
		$relatorias = $this->Relatoria->find('list',array('fields'=>array('Relatoria.producto_id','Relatoria.descripcion_actividades'),
											  'conditions'=>array('Relatoria.municipio_id'=>$municipio_id, 'AND'=>array('Relatoria.momento_id'=>$momento))));		
		//Entidades del municipio
		$entidades_municipio = $this->EntidadesMunicipio->find('all',array('conditions'=>array('EntidadesMunicipio.municipio_id'=>$municipio_id)));
		
		$entidades = array();		
		foreach ($entidades_municipio as $entidad):
			$aux = $this->Entidade->find('first',array('conditions'=>array('Entidade.id'=>$entidad['EntidadesMunicipio']['entidade_id'])));
			$entidades[]= $aux['Entidade'];			
		endforeach;
		
		$this->set(compact('productos', 'municipio', 'entidades', 'momento', 'asistentes', 'relatorias'));
	}

	function delete($id = null) {
		$usuario_activo=$this->Access->getMy('username');	
		//Verificacion de sesion del sistema		
		if(!$usuario_activo){
			$this->Session->setFlash(__('Por favor inicie sesion', true));
			$this->redirect(array('controller'=>'users','action' => 'login'));
		}
		//Fin de sesion
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for relatoria', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Relatoria->delete($id)) {
			$this->Session->setFlash(__('Relatoria Eliminada', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('La Relatoria no se ha eliminado', true));
		$this->redirect(array('action' => 'index'));
	}
}